<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class EventModel extends CI_Model {

    public $table = 'events';
    public $primary = 'id';

    function add($data) {
        $this->db->insert($this->table, $data);
    }

    function update($id, $data) {
        $this->db->where($this->primary, $id);
        return $this->db->update($this->table, $data);
    }

    function delete($id) {
        $this->db->where('id', $id);
        return $this->db->delete('events');
    }

    /**
     * Trả lại chi tiết thông tin của sự kiện cho việc edit
     *
     * @param $id Id của sự kiện
     * @return array Trả về thông tin chi tiết của một event
     */
    function getEventById($id) {
        $query = $this->db->query("SELECT * FROM  `events`
  	                                 WHERE `id` = {$id}");
        return $query->row_array();
    }
    
    function getEventByCidAndType($cid, $type) {
        $query = $this->db->query("SELECT * FROM  `events`
  	                                 WHERE `cid` = {$cid}
                                         AND `type` = {$type}
                                         ORDER BY `time_event` DESC");
        return $query->row_array();
    }

    /**
     * Trả lại tất cả các sự kiện trong tháng
     *
     * @param $year Năm cần tìm
     * @param $month Tháng cần tìm
     * @return array Trả về thông tin chi tiết của tất cả các sự kiện trong tháng
     */
    function getEventByYearMonth($start_time, $end_time) {
        $query = $this->db->query("SELECT * FROM  {$this->table}
                                       WHERE `time_event` >= '{$start_time}' AND `time_event` < '{$end_time}'");
        return $query->result_array();
    }
    
    function getEventByYearMonthAndCIdAndType($start_time, $end_time, $cid, $type) {
        $query = $this->db->query("SELECT * FROM  {$this->table}
                                       WHERE `time_event` >= '{$start_time}' AND `time_event` < '{$end_time}'
                                       AND `cid` = {$cid}
                                       AND `type` = {$type}");
        return $query->result_array();
    }

    public function getEvents($limit, $start) {
        $query = $this->db->query("SELECT * FROM `{$this->table}` AS r
                            	     ORDER BY `{$this->primary}` DESC 
                            	      LIMIT {$start}, {$limit}");
        return $query->result_array();
    }
    
    function getNewestEventByCidAndType($cid, $type) {
        $query = $this->db->query("SELECT * FROM  `events`
  	                                 WHERE `cid` = {$cid}
                                         AND `type` = {$type}
                                         ORDER BY `time_event` DESC
                                         LIMIT 1");
        return $query->row_array();
    }
}
